#pragma once
#include <cstring>
#include <iostream>

#define STAFF 3
#define TEACHER 2
#define STUDENT 1
#define NONE 0
using namespace std;
struct Date
{
	unsigned char dow, day, month;
	unsigned int year;

	Date()
	{}
	Date(unsigned char dow, unsigned char day, unsigned char month, unsigned int year)
	{
		this->dow = dow;
		this->day = day;
		this->month = month;
		this->year = year;
	}
	void display()
	{
		cout << (int)day << "/" << (int)month << "/" << year << endl;
	}
	void display(ostream &out)
	{
		out << (int)day << "/" << (int)month << "/" << year << endl;
	}
};

class People
{
protected:
	char* name;
	Date birthday;
	int id;
public:
	virtual int getType() = 0;
	virtual void* Clone() = 0;
	static int counter;
	People(char* name, Date birthday, int id);
	virtual void PrintInfo();
	virtual void PrintInfo(ostream &out);
	char* getName();
	Date getBirthday();
	int getId();
	void setName(char* name);
	void setBirthday(Date dob);
	void setId(int id);
	virtual ~People();
};


